/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package valida.beans;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Andres Felipe
 */
public class Archivo {

    private String descripcionArchivo;
    private String prefijoArchivo;
    private String nombreDBTabla;
    private List<Campo> Campos;
    private final String PREFIJO_TABLA_USUARIO="USR_";

    public Archivo(String descripcionArchivo) {
        this.descripcionArchivo=descripcionArchivo;
        String Time = (System.currentTimeMillis()+"");
        //Validamos la Longitud del Archivo
        this.nombreDBTabla=PREFIJO_TABLA_USUARIO+
            (descripcionArchivo.length()>5?
            descripcionArchivo.trim().replaceAll(" ", "").substring(0, 5).trim():
            descripcionArchivo.trim().replaceAll(" ", ""))
            +Time.substring(Time.length()-5, Time.length());
    }

    public String getDescripcionArchivo() {
        return descripcionArchivo;
    }

    public void setDescripcionArchivo(String descripcionArchivo) {
        this.descripcionArchivo = descripcionArchivo;
    }

    public String getNombreDBTabla() {
        return nombreDBTabla;
    }

    public void setNombreDBTabla(String nombreDBTabla) {
        this.nombreDBTabla = nombreDBTabla;
    }

    public String getPrefijoArchivo() {
        return prefijoArchivo;
    }

    public void setPrefijoArchivo(String prefijoArchivo) {
        this.prefijoArchivo = prefijoArchivo;
    }

    @Override
    public String toString() {
        return descripcionArchivo;
    }

    public List<Campo> getCampos() {
        return Campos;
    }

    public void setCampos(List<Campo> Campos) {
        this.Campos = Campos;
    }

    public void addCampo(Campo campo) {
        if(Campos==null){
            Campos= new ArrayList<Campo>();
        }
        campo.setNombreTabla(nombreDBTabla);
        Campos.add(campo);
    }

    public void removeCampo(Campo campo){
        if(Campos==null){
            throw new UnsupportedOperationException("Este Archivo No Contiene Campos Asociados, "
                                                + "Por lo Tanto no se Pueden Remover el Campo");
        }else{
            Campos.remove(campo);
        }
    }


}
